package jp.co.menox.tmserver.service;

import java.util.Map;

import jp.co.menox.tmcommon.model.Category;
import jp.co.menox.tmserver.dao.BorrowingDao;
import jp.co.menox.tmserver.dao.CategoryDao;
import jp.co.menox.tmserver.dao.LendingDao;

/**
 * カテゴリマスタ関連サービス
 * @author
 *
 */
public class CategoryService extends TmServerServiceBase<Category, CategoryDao> {

    private LendingDao lendingDao;
    private BorrowingDao borrowingDao;
    
    public CategoryService() {
        dao = new CategoryDao();
        lendingDao = new LendingDao();
        borrowingDao = new BorrowingDao();
    }

    
    /**
     * カテゴリmapを取得する
     * @return
     */
    public Map<Long, String> getCategoryMap() {
        return dao.getCategoryMap();
    }


    /**
     * 削除処理：　使用中の場合は削除不可
     * @param model
     */
    @Override
    public Category delete(Category model) {
        if (model == null) {
            return null;
        }
        
        if (lendingDao.getSizeInCategoryId(model.getId()) > 0) {
            // 有効なレコードが存在する
            // TODO: 独自例外を作るか。また、メッセージを定義するか。
            throw new RuntimeException("「貸したいものテーブル」で使用中のため削除できません。");
        }
        if (borrowingDao.getSizeInCategoryId(model.getId()) > 0) {
            // 有効なレコードが存在する
            // TODO: 独自例外を作るか。また、メッセージを定義するか。
            throw new RuntimeException("「借りたいものテーブル」で使用中のため削除できません。");
        }
        return super.delete(model);
    }

}
